//
//  MainTabBar.swift
//  Weibo
//
//  Created by mac on 15/12/13.
//  Copyright © 2015年 mac. All rights reserved.
//

import UIKit

//MainTabBar 既支持手码创建, 也支持xib/ sb创建

class MainTabBar: UITabBar {

   //UIView的默认的构造方法
    //重写父类的构造方法
    override init(frame: CGRect) {
        super.init(frame:frame)
        addSubview(composeBtn)
    }
    
    //通过xib / sb创建 视图会调用这个
    //如果实现了 init(fram) 意味着当前这个类默认支持手码创建 不支持xib创建 不会调用init(decoder)
    //创建tabbar 调用了这个方法 就一定是xib / sb中创建
    required init?(coder aDecoder: NSCoder) {
          //表示 是致命错误默认实现报错
        //当从xib / sb加载控件,程序就会报错
        fatalError("init(coder:)has not been implemented")
        //coder 编码器  decoder 解码器,译码器
        super.init(coder: aDecoder)
        addSubview(composeBtn)
    }
    
    //在这个方法中设置所有子视图的frame
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //修改所有tabbarbutton的frame+ 将控件位置空出来
        let w = self.bounds.width / 5
        let h = self.bounds.height
        let rect = CGRect(x: 0, y: 0, width: w, height: h)
        
        //遍历所有的子视图 修改大小
        //定义索引系数
        var index: CGFloat = 0
        for subView in subviews{
        
           // subView.isKindOfClass(aClass: AnyClass)这个方法可以拿到私有类字符串的名字
            //NSClassFromString方法的返回值是可选的用 ! 进行强制解包
            if subView.isKindOfClass(NSClassFromString("UITabBarButton")!){
            
                //拿到这个类,修改frame
                //dx: 水平方向的位移  dy: 垂直方向的位移
                subView.frame = CGRectOffset(rect, index * w, 0)
                
                //判断当tabbar导航栏到中间的位置时使index多加1,将中间位置空出来添加+部分
//                if index == 1{
//                //累加index
//                    index ++
//                }
//                index++
                //使用三目运算符实现判断,节约代码量
                index += (index == 1 ? 2 : 1)
            }
        }
        //设置加号按钮的位置
//        composeBtn.frame = CGRectOffset(rect, 2 * w, -20)//设置dy: 20能够使 + 按钮向上突出的效果
//        bringSubviewToFront(composeBtn)
        
        composeBtn.frame = CGRectOffset(rect, 2 * w, 0)
         
    }
    
    //懒加载  加号按钮
    lazy var composeBtn: UIButton = {
    
        //()自定义样式
        let btn = UIButton()
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: .Normal)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        //完成上述设置并不显示中间的加号按钮
        //根据背景视图 自动设置大小(因为之前没有设置加号的frame)
        btn.sizeToFit()
        return btn
    }()
}
